package com.personal.portal.common.entity;

import lombok.Getter;

import java.util.Arrays;

/**
 * 状态枚举类
 *
 * @author zhanghui
 * @version 1.0.0
 * @since 2025-11-12
 */
@Getter
public enum StatusEnum {

    /**
     * 禁用状态
     */
    DISABLED("disabled", "禁用"),

    /**
     * 启用状态
     */
    ENABLED("enabled", "启用");

    /**
     * -- GETTER --
     *  获取状态码
     */
    private final String code;
    /**
     * -- GETTER --
     *  获取状态描述
     */
    private final String description;

    StatusEnum(String code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据状态码获取枚举值
     *
     * @param code 状态码
     * @return 枚举值，如果未找到返回null
     */
    public static StatusEnum getByCode(String code) {
        return Arrays.stream(values())
                .filter(status -> status.getCode().equals(code))
                .findFirst()
                .orElse(null);
    }

    /**
     * 根据状态码获取描述
     *
     * @param code 状态码
     * @return 状态描述，如果未找到返回空字符串
     */
    public static String getDescription(String code) {
        StatusEnum status = getByCode(code);
        return status != null ? status.getDescription() : "";
    }

    @Override
    public String toString() {
        return "StatusEnum{" +
                "code='" + code + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}
